{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "b1797021",
   "metadata": {},
   "outputs": [],
   "source": [
    "import collections\n",
    "\n",
    "import datasets\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.optim as optim\n",
    "import torchtext\n",
    "import tqdm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "0d5b5146",
   "metadata": {},
   "outputs": [],
   "source": [
    "seed = 1234\n",
    "\n",
    "np.random.seed(seed)\n",
    "torch.manual_seed(seed)\n",
    "torch.cuda.manual_seed(seed)\n",
    "torch.backends.cudnn.deterministic = True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "1f9cda19",
   "metadata": {},
   "outputs": [],
   "source": [
    "train_data, test_data = datasets.load_dataset(\"imdb\", split=[\"train\", \"test\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "48f4c1f6",
   "metadata": {},
   "outputs": [],
   "source": [
    "tokenizer = torchtext.data.utils.get_tokenizer(\"basic_english\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "ae7e60ad",
   "metadata": {},
   "outputs": [],
   "source": [
    "def tokenize_example(example, tokenizer, max_length):\n",
    "    tokens = tokenizer(example[\"text\"])[:max_length]\n",
    "    return {\"tokens\": tokens}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "eca685b6",
   "metadata": {},
   "outputs": [],
   "source": [
    "max_length = 256\n",
    "\n",
    "train_data = train_data.map(\n",
    "    tokenize_example, fn_kwargs={\"tokenizer\": tokenizer, \"max_length\": max_length}\n",
    ")\n",
    "test_data = test_data.map(\n",
    "    tokenize_example, fn_kwargs={\"tokenizer\": tokenizer, \"max_length\": max_length}\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "cb53b268",
   "metadata": {},
   "outputs": [],
   "source": [
    "test_size = 0.25\n",
    "\n",
    "train_valid_data = train_data.train_test_split(test_size=test_size)\n",
    "train_data = train_valid_data[\"train\"]\n",
    "valid_data = train_valid_data[\"test\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "a7f7d1d7",
   "metadata": {},
   "outputs": [],
   "source": [
    "min_freq = 5\n",
    "special_tokens = [\"<unk>\", \"<pad>\"]\n",
    "\n",
    "vocab = torchtext.vocab.build_vocab_from_iterator(\n",
    "    train_data[\"tokens\"],\n",
    "    min_freq=min_freq,\n",
    "    specials=special_tokens,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "d029794a",
   "metadata": {},
   "outputs": [],
   "source": [
    "unk_index = vocab[\"<unk>\"]\n",
    "pad_index = vocab[\"<pad>\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "03aa4514",
   "metadata": {},
   "outputs": [],
   "source": [
    "vocab.set_default_index(unk_index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "0133bdd3",
   "metadata": {},
   "outputs": [],
   "source": [
    "def numericalize_example(example, vocab):\n",
    "    ids = vocab.lookup_indices(example[\"tokens\"])\n",
    "    return {\"ids\": ids}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "a8deac4e",
   "metadata": {},
   "outputs": [],
   "source": [
    "train_data = train_data.map(numericalize_example, fn_kwargs={\"vocab\": vocab})\n",
    "valid_data = valid_data.map(numericalize_example, fn_kwargs={\"vocab\": vocab})\n",
    "test_data = test_data.map(numericalize_example, fn_kwargs={\"vocab\": vocab})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "29f4bd82",
   "metadata": {},
   "outputs": [],
   "source": [
    "train_data = train_data.with_format(type=\"torch\", columns=[\"ids\", \"label\"])\n",
    "valid_data = valid_data.with_format(type=\"torch\", columns=[\"ids\", \"label\"])\n",
    "test_data = test_data.with_format(type=\"torch\", columns=[\"ids\", \"label\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "e7325258",
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_collate_fn(pad_index):\n",
    "    def collate_fn(batch):\n",
    "        batch_ids = [i[\"ids\"] for i in batch]\n",
    "        batch_ids = nn.utils.rnn.pad_sequence(\n",
    "            batch_ids, padding_value=pad_index, batch_first=True\n",
    "        )\n",
    "        batch_label = [i[\"label\"] for i in batch]\n",
    "        batch_label = torch.stack(batch_label)\n",
    "        batch = {\"ids\": batch_ids, \"label\": batch_label}\n",
    "        return batch\n",
    "\n",
    "    return collate_fn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "a3ba6bc6",
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_data_loader(dataset, batch_size, pad_index, shuffle=False):\n",
    "    collate_fn = get_collate_fn(pad_index)\n",
    "    data_loader = torch.utils.data.DataLoader(\n",
    "        dataset=dataset,\n",
    "        batch_size=batch_size,\n",
    "        collate_fn=collate_fn,\n",
    "        shuffle=shuffle,\n",
    "    )\n",
    "    return data_loader"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "be456751",
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size = 512\n",
    "\n",
    "train_data_loader = get_data_loader(train_data, batch_size, pad_index, shuffle=True)\n",
    "valid_data_loader = get_data_loader(valid_data, batch_size, pad_index)\n",
    "test_data_loader = get_data_loader(test_data, batch_size, pad_index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "65cd046f",
   "metadata": {},
   "outputs": [],
   "source": [
    "class CNN(nn.Module):\n",
    "    def __init__(\n",
    "        self,\n",
    "        vocab_size,\n",
    "        embedding_dim,\n",
    "        n_filters,\n",
    "        filter_sizes,\n",
    "        output_dim,\n",
    "        dropout_rate,\n",
    "        pad_index,\n",
    "    ):\n",
    "        super().__init__()\n",
    "        self.embedding = nn.Embedding(vocab_size, embedding_dim, padding_idx=pad_index)\n",
    "        self.convs = nn.ModuleList(\n",
    "            [\n",
    "                nn.Conv1d(embedding_dim, n_filters, filter_size)\n",
    "                for filter_size in filter_sizes\n",
    "            ]\n",
    "        )\n",
    "        self.fc = nn.Linear(len(filter_sizes) * n_filters, output_dim)\n",
    "        self.dropout = nn.Dropout(dropout_rate)\n",
    "\n",
    "    def forward(self, ids):\n",
    "        # ids = [batch size, seq len]\n",
    "        embedded = self.dropout(self.embedding(ids))\n",
    "        # embedded = [batch size, seq len, embedding dim]\n",
    "        embedded = embedded.permute(0, 2, 1)\n",
    "        # embedded = [batch size, embedding dim, seq len]\n",
    "        conved = [torch.relu(conv(embedded)) for conv in self.convs]\n",
    "        # conved_n = [batch size, n filters, seq len - filter_sizes[n] + 1]\n",
    "        pooled = [conv.max(dim=-1).values for conv in conved]\n",
    "        # pooled_n = [batch size, n filters]\n",
    "        cat = self.dropout(torch.cat(pooled, dim=-1))\n",
    "        # cat = [batch size, n filters * len(filter_sizes)]\n",
    "        prediction = self.fc(cat)\n",
    "        # prediction = [batch size, output dim]\n",
    "        return prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "ad3da9c4",
   "metadata": {},
   "outputs": [],
   "source": [
    "vocab_size = len(vocab)\n",
    "embedding_dim = 300\n",
    "n_filters = 100\n",
    "filter_sizes = [3, 5, 7]\n",
    "output_dim = len(train_data.unique(\"label\"))\n",
    "dropout_rate = 0.25\n",
    "\n",
    "model = CNN(\n",
    "    vocab_size,\n",
    "    embedding_dim,\n",
    "    n_filters,\n",
    "    filter_sizes,\n",
    "    output_dim,\n",
    "    dropout_rate,\n",
    "    pad_index,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "e5b9314c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The model has 6,941,402 trainable parameters\n"
     ]
    }
   ],
   "source": [
    "def count_parameters(model):\n",
    "    return sum(p.numel() for p in model.parameters() if p.requires_grad)\n",
    "\n",
    "\n",
    "print(f\"The model has {count_parameters(model):,} trainable parameters\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "48dd9079",
   "metadata": {},
   "outputs": [],
   "source": [
    "def initialize_weights(m):\n",
    "    if isinstance(m, nn.Linear):\n",
    "        nn.init.xavier_normal_(m.weight)\n",
    "        nn.init.zeros_(m.bias)\n",
    "    elif isinstance(m, nn.Conv1d):\n",
    "        nn.init.kaiming_normal_(m.weight, nonlinearity=\"relu\")\n",
    "        nn.init.zeros_(m.bias)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "e455a168",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "CNN(\n",
       "  (embedding): Embedding(21635, 300, padding_idx=1)\n",
       "  (convs): ModuleList(\n",
       "    (0): Conv1d(300, 100, kernel_size=(3,), stride=(1,))\n",
       "    (1): Conv1d(300, 100, kernel_size=(5,), stride=(1,))\n",
       "    (2): Conv1d(300, 100, kernel_size=(7,), stride=(1,))\n",
       "  )\n",
       "  (fc): Linear(in_features=300, out_features=2, bias=True)\n",
       "  (dropout): Dropout(p=0.25, inplace=False)\n",
       ")"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.apply(initialize_weights)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "cca8ce6b",
   "metadata": {},
   "outputs": [],
   "source": [
    "vectors = torchtext.vocab.GloVe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "e8f96c10",
   "metadata": {},
   "outputs": [],
   "source": [
    "pretrained_embedding = vectors.get_vecs_by_tokens(vocab.get_itos())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "bb09a2aa",
   "metadata": {},
   "outputs": [],
   "source": [
    "model.embedding.weight.data = pretrained_embedding"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "7a5e39e9",
   "metadata": {},
   "outputs": [],
   "source": [
    "optimizer = optim.Adam(model.parameters())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "e123ae07",
   "metadata": {},
   "outputs": [],
   "source": [
    "criterion = nn.CrossEntropyLoss()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "825a973d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "device(type='cuda')"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
    "\n",
    "device"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "f9512ae1",
   "metadata": {},
   "outputs": [],
   "source": [
    "model = model.to(device)\n",
    "criterion = criterion.to(device)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "c3651ca7",
   "metadata": {},
   "outputs": [],
   "source": [
    "def train(data_loader, model, criterion, optimizer, device):\n",
    "    model.train()\n",
    "    epoch_losses = []\n",
    "    epoch_accs = []\n",
    "    for batch in tqdm.tqdm(data_loader, desc=\"training...\"):\n",
    "        ids = batch[\"ids\"].to(device)\n",
    "        label = batch[\"label\"].to(device)\n",
    "        prediction = model(ids)\n",
    "        loss = criterion(prediction, label)\n",
    "        accuracy = get_accuracy(prediction, label)\n",
    "        optimizer.zero_grad()\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        epoch_losses.append(loss.item())\n",
    "        epoch_accs.append(accuracy.item())\n",
    "    return np.mean(epoch_losses), np.mean(epoch_accs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "f2a96019",
   "metadata": {},
   "outputs": [],
   "source": [
    "def evaluate(data_loader, model, criterion, device):\n",
    "    model.eval()\n",
    "    epoch_losses = []\n",
    "    epoch_accs = []\n",
    "    with torch.no_grad():\n",
    "        for batch in tqdm.tqdm(data_loader, desc=\"evaluating...\"):\n",
    "            ids = batch[\"ids\"].to(device)\n",
    "            label = batch[\"label\"].to(device)\n",
    "            prediction = model(ids)\n",
    "            loss = criterion(prediction, label)\n",
    "            accuracy = get_accuracy(prediction, label)\n",
    "            epoch_losses.append(loss.item())\n",
    "            epoch_accs.append(accuracy.item())\n",
    "    return np.mean(epoch_losses), np.mean(epoch_accs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "3cf2f1e1",
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_accuracy(prediction, label):\n",
    "    batch_size, _ = prediction.shape\n",
    "    predicted_classes = prediction.argmax(dim=-1)\n",
    "    correct_predictions = predicted_classes.eq(label).sum()\n",
    "    accuracy = correct_predictions / batch_size\n",
    "    return accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "af6e8a15",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "training...: 100%|██████████████████████████████| 37/37 [00:04<00:00,  8.54it/s]\n",
      "evaluating...: 100%|████████████████████████████| 13/13 [00:00<00:00, 45.48it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 0\n",
      "train_loss: 0.806, train_acc: 0.616\n",
      "valid_loss: 0.438, valid_acc: 0.800\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "training...: 100%|██████████████████████████████| 37/37 [00:01<00:00, 22.43it/s]\n",
      "evaluating...: 100%|████████████████████████████| 13/13 [00:00<00:00, 46.65it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 1\n",
      "train_loss: 0.489, train_acc: 0.774\n",
      "valid_loss: 0.339, valid_acc: 0.853\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "training...: 100%|██████████████████████████████| 37/37 [00:01<00:00, 22.44it/s]\n",
      "evaluating...: 100%|████████████████████████████| 13/13 [00:00<00:00, 46.40it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 2\n",
      "train_loss: 0.380, train_acc: 0.833\n",
      "valid_loss: 0.313, valid_acc: 0.865\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "training...: 100%|██████████████████████████████| 37/37 [00:01<00:00, 22.28it/s]\n",
      "evaluating...: 100%|████████████████████████████| 13/13 [00:00<00:00, 45.61it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 3\n",
      "train_loss: 0.319, train_acc: 0.862\n",
      "valid_loss: 0.301, valid_acc: 0.874\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "training...: 100%|██████████████████████████████| 37/37 [00:01<00:00, 22.47it/s]\n",
      "evaluating...: 100%|████████████████████████████| 13/13 [00:00<00:00, 47.36it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 4\n",
      "train_loss: 0.269, train_acc: 0.888\n",
      "valid_loss: 0.290, valid_acc: 0.880\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "training...: 100%|██████████████████████████████| 37/37 [00:01<00:00, 22.35it/s]\n",
      "evaluating...: 100%|████████████████████████████| 13/13 [00:00<00:00, 46.81it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 5\n",
      "train_loss: 0.229, train_acc: 0.906\n",
      "valid_loss: 0.284, valid_acc: 0.885\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "training...: 100%|██████████████████████████████| 37/37 [00:01<00:00, 21.38it/s]\n",
      "evaluating...: 100%|████████████████████████████| 13/13 [00:00<00:00, 48.12it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 6\n",
      "train_loss: 0.198, train_acc: 0.924\n",
      "valid_loss: 0.291, valid_acc: 0.882\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "training...: 100%|██████████████████████████████| 37/37 [00:01<00:00, 22.55it/s]\n",
      "evaluating...: 100%|████████████████████████████| 13/13 [00:00<00:00, 48.42it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 7\n",
      "train_loss: 0.168, train_acc: 0.935\n",
      "valid_loss: 0.292, valid_acc: 0.883\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "training...: 100%|██████████████████████████████| 37/37 [00:01<00:00, 22.73it/s]\n",
      "evaluating...: 100%|████████████████████████████| 13/13 [00:00<00:00, 48.14it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 8\n",
      "train_loss: 0.141, train_acc: 0.949\n",
      "valid_loss: 0.282, valid_acc: 0.887\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "training...: 100%|██████████████████████████████| 37/37 [00:01<00:00, 22.35it/s]\n",
      "evaluating...: 100%|████████████████████████████| 13/13 [00:00<00:00, 48.60it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch: 9\n",
      "train_loss: 0.118, train_acc: 0.960\n",
      "valid_loss: 0.284, valid_acc: 0.891\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "n_epochs = 10\n",
    "best_valid_loss = float(\"inf\")\n",
    "\n",
    "metrics = collections.defaultdict(list)\n",
    "\n",
    "for epoch in range(n_epochs):\n",
    "    train_loss, train_acc = train(\n",
    "        train_data_loader, model, criterion, optimizer, device\n",
    "    )\n",
    "    valid_loss, valid_acc = evaluate(valid_data_loader, model, criterion, device)\n",
    "    metrics[\"train_losses\"].append(train_loss)\n",
    "    metrics[\"train_accs\"].append(train_acc)\n",
    "    metrics[\"valid_losses\"].append(valid_loss)\n",
    "    metrics[\"valid_accs\"].append(valid_acc)\n",
    "    if valid_loss < best_valid_loss:\n",
    "        best_valid_loss = valid_loss\n",
    "        torch.save(model.state_dict(), \"cnn.pt\")\n",
    "    print(f\"epoch: {epoch}\")\n",
    "    print(f\"train_loss: {train_loss:.3f}, train_acc: {train_acc:.3f}\")\n",
    "    print(f\"valid_loss: {valid_loss:.3f}, valid_acc: {valid_acc:.3f}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "03860181",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA04AAAINCAYAAAAJGy/3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAACFA0lEQVR4nOzdd3yV9fn/8dc5Jyd7E7IDYUPYMwLuMhQXrqKgKFatCr/WptavdAiOumttLWprXVURWgcOcCAIKiBh7yEQkkD23slJzvn9ccKByAqHkPskeT8fj/sRzp37nHOdi9Tmzee+r9vkcDgciIiIiIiIyEmZjS5ARERERETE0yk4iYiIiIiInIaCk4iIiIiIyGkoOImIiIiIiJyGgpOIiIiIiMhpKDiJiIiIiIichoKTiIiIiIjIaSg4iYiIiIiInIaX0QW0NrvdTlZWFkFBQZhMJqPLERERERERgzgcDsrLy4mNjcVsPvWaUocLTllZWSQkJBhdhoiIiIiIeIjMzEzi4+NPeUyHC05BQUGAsznBwcEGVwM2m42vvvqKCRMmYLVajS6nzVDf3KO+uUd9c5965x71zT3qm3vUN/epd+7xpL6VlZWRkJDgygin0uGC05HT84KDgz0mOPn7+xMcHGz4D05bor65R31zj/rmPvXOPeqbe9Q396hv7lPv3OOJfWvOJTwaDiEiIiIiInIaCk4iIiIiIiKnoeAkIiIiIiJyGh3uGicRERERkTPhcDior6+noaGhyX6bzYaXlxc1NTXHfU9OrrX7ZrVasVgsZ/06Ck4iIiIiIidRV1dHdnY2VVVVx33P4XAQHR1NZmam7g96Blq7byaTifj4eAIDA8/qdRScREREREROwG63k5aWhsViITY2Fm9v7ya/6NvtdioqKggMDDztzVPlqNbsm8PhID8/n0OHDtGrV6+zWnlScBIREREROYG6ujrsdjsJCQn4+/sf93273U5dXR2+vr4KTmegtfvWuXNnDh48iM1mO6vgpL9hEREREZFTUChq21rqdED9FIiIiIiIiJyGgpOIiIiIiMhpKDiJiIiIiMhJJSYm8sILLxj+GkbTcAgRERERkXbk4osvZsiQIS0WVNatW0dAQECLvFZbpuAkIiIiItLBOBwOGhoa8PI6fRzo3LlzK1Tk+XSqnoiIiIhIMzgcDqrq6pts1XUNx+07F5vD4WhWjbfffjsrV67kb3/7GyaTCZPJxMGDB1mxYgUmk4nPP/+c4cOH4+Pjw/fff8/+/fu55ppriIqKIjAwkJEjR/L11183ec2fnmZnMpn497//zbXXXou/vz+9evXik08+OaNeZmZmMnnyZAIDAwkODubnP/85ubm5ru9v2bKFSy65hKCgIIKDgxk+fDjr168HID09nauuuoqwsDACAgLo378/S5YsOaP3d4dWnEREREREmqHa1kDSw18a8t47H52Iv/fpf3X/29/+xt69exkwYACPPvoocPQ+RgAPPfQQzz33HN27dycsLIzMzEwmTZrEn//8Z3x8fPjPf/7DVVddxZ49e+jSpctJ3+eRRx7hmWee4dlnn+XFF19k2rRppKenEx4eftoa7XY706ZNIyQkhJUrV1JfX8/MmTOZMmUKK1asAGDatGkMHTqUl19+GYvFwubNm7FarQDMnDmTuro6vv32WwICAti5cyeBgYGnfd+zpeAkIiIiItJOhISE4O3tjb+/P9HR0cd9/9FHH2X8+PGux+Hh4QwePNj1+LHHHuOjjz7ik08+YdasWSd9n9tvv52bb74ZgCeeeIK///3vpKamctlll522xmXLlrFz5072799P165dAfjPf/5D//79WbduHSNHjiQjI4Pf/e539O3bF4BevXq5np+RkcH111/PwIEDAejevftp37MlKDgZqKK2ng83ZGKrMboSERERETkdP6uFnY9OdD222+2Ul5UTFBx0zm+S62e1tMjrjBgxosnjiooK5s6dy+LFi8nOzqa+vp7q6moyMjJO+TqDBg1y/TkgIIDg4GDy8vKaVcPu3buJi4sjISHBtS8pKYnQ0FB27drFyJEjSUlJ4c477+Ttt99m3Lhx3HjjjfTo0QOAX/3qV9x777189dVXjBs3juuvv75JPeeK4dc4zZs3j8TERHx9fUlOTiY1NfWUx7/wwgv06dMHPz8/EhIS+M1vfkNNTdtMHr/972Ye/mQXq3IN/2sQERERkdMwmUz4e3s12fy8LcftOxebyWRqkc/w0+l4DzzwAB999BFPPPEE3333HZs3b2bgwIHU1dWd8nWOnDZ3bG/sdnuL1Agwd+5cduzYwRVXXMHy5ctJSkrio48+AuDOO+/kwIED3HrrrWzbto0RI0bw4osvtth7n4yhv7EvXLiQlJQU5syZw8aNGxk8eDATJ048aVqdP38+Dz30EHPmzGHXrl289tprLFy4kN///vetXHnLuH5YPABr80zU1rfcD5qIiIiIdFze3t40NDQ069hVq1Zx++23c+211zJw4ECio6Nd10OdK3379uXw4cNkZma69u3cuZOSkhKSkpJc+3r37s1vfvMbvvrqK6677jreeOMN1/cSEhK45557+PDDD/ntb3/Lq6++ek5rBoOD0/PPP89dd93FjBkzSEpK4pVXXsHf35/XX3/9hMevXr2asWPHMnXqVBITE5kwYQI333zzaVepPNWlfSOJCvahst7EVztzT/8EEREREZHTSExMZO3atRw8eJCCgoJTrgT16tWLDz/8kM2bN7NlyxamTp3aoitHJzJu3DiSkpK49dZb2bhxI6mpqUyfPp2LLrqIESNGUF1dzaxZs1ixYgXp6emsWrWKdevW0a9fPwDuv/9+vvzyS9LS0ti4cSPffPON63vnkmHXONXV1bFhwwZmz57t2mc2mxk3bhxr1qw54XPGjBnDO++8Q2pqKqNGjeLAgQMsWbKEW2+99aTvU1tbS21tretxWVkZADabDZvN1kKfxn3XD4nhpW8PMn9tBlcNijG6nDbjyN+dJ/wdtiXqm3vUN/epd+5R39yjvrlHfTs5m82Gw+HAbrefMEwcGRF+5BhPkZKS4lqYqK6uZv/+/a76fvpZnnvuOe68807GjBlDREQEDz74IGVlZcd9pp8+PlFPTtanE73Gu+++yx/+8AcuvPBCzGYzEydO5O9//zt2ux2TyURBQQHTp08nNzeXiIgIrr32WubMmYPdbndN4Tt06BDBwcFMnDiR559//qTvbbfbcTgc2Gw2LJam14qdyc+9ydHcofAtLCsri7i4OFavXs3o0aNd+x988EFWrlzJ2rVrT/i8v//97zzwwAM4HA7q6+u55557ePnll0/6PnPnzuWRRx45bv/8+fPx9/c/+w9ylkpqYe5GCw5MzB5cT7TxJYmIiIgI4OXlRXR0NAkJCXh7extdjriprq6OzMxMcnJyqK+vb/K9qqoqpk6dSmlpKcHBwad8nTY1VW/FihU88cQTvPTSSyQnJ7Nv3z5+/etf89hjj/GnP/3phM+ZPXs2KSkprsdlZWUkJCQwYcKE0zanNdhsNv6XtoztxSay/Ltzx6S+RpfUJthsNpYuXcr48eOPuzhRTk59c4/65j71zj3qm3vU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iELBSUREREREzojJZCIy2JfIYF8u7hPp2l9ja2Bvbvlxq1PltfWua6mcLFw9robgAF9jPoAbFJxERERERKRF+FotDIoPZVB8qGufw+HgUHG1K0ztyCpha1ouXTv5G1eoGxScRERERETknDGZTCSE+5MQ7s+E/tHYbDaWLFnS5m6+27av0BIREREREWkFCk4iIiIiIiKnoeAkIiIiIiJyGgpOIiIiIiIip2F4cJo3bx6JiYn4+vqSnJxMamrqSY/dsWMH119/PYmJiZhMJl544YXWK1RERERERDosQ4PTwoULSUlJYc6cOWzcuJHBgwczceJE8vLyTnh8VVUV3bt356mnniI6OrqVqxURERERkY7K0OD0/PPPc9dddzFjxgySkpJ45ZVX8Pf35/XXXz/h8SNHjuTZZ5/lpptuwsfHp5WrFRERERGRjsqw4FRXV8eGDRsYN27c0WLMZsaNG8eaNWuMKktEREREROQ4ht0At6CggIaGBqKioprsj4qKYvfu3S32PrW1tdTW1roel5WVAWCz2bDZbC32Pu46UoMn1NKWqG/uUd/co765T71zj/rmHvXNPeqb+9Q793hS386kBsOCU2t58skneeSRR47b/9VXX+Hv729ARSe2dOlSo0tok9Q396hv7lHf3KfeuUd9c4/65h71zX3qnXs8oW9VVVXNPtaw4BQREYHFYiE3N7fJ/tzc3BYd/DB79mxSUlJcj8vKykhISGDChAkEBwe32Pu4y2azsXTpUsaPH4/VajW6nDZDfXOP+uYe9c196p171Df3qG/uUd/cp965x5P6duRstOYwLDh5e3szfPhwli1bxuTJkwGw2+0sW7aMWbNmtdj7+Pj4nHCQhNVqNfwv6lieVk9bob65R31zj/rmPvXOPeqbe9Q396hv7lPv3OMJfTuT9zf0VL2UlBRuu+02RowYwahRo3jhhReorKxkxowZAEyfPp24uDiefPJJwDlQYufOna4/Hz58mM2bNxMYGEjPnj0N+xwiIiIiItK+GRqcpkyZQn5+Pg8//DA5OTkMGTKEL774wjUwIiMjA7P56OC/rKwshg4d6nr83HPP8dxzz3HRRRexYsWK1i5fREREREQ6CMOHQ8yaNeukp+b9NAwlJibicDhaoSoREREREZGjDL0BroiIiIiISFug4CQiIiIiInIaCk4iIiIiIiKnYfg1Tq3tyDVSZzKz/Vyy2WxUVVVRVlZm+DjGtkR9c4/65h71zX3qnXvUN/eob+5R39yn3rnHk/p2JBM0Z45ChwtO5eXlACQkJBhciYiIiIiIeILy8nJCQkJOeYzJ0cHG1NntdrKysggKCsJkMhldDmVlZSQkJJCZmUlwcLDR5bQZ6pt71Df3qG/uU+/co765R31zj/rmPvXOPZ7UN4fDQXl5ObGxsU1ug3QiHW7FyWw2Ex8fb3QZxwkODjb8B6ctUt/co765R31zn3rnHvXNPeqbe9Q396l37vGUvp1upekIDYcQERERERE5DQUnERERERGR01BwMpiPjw9z5szBx8fH6FLaFPXNPeqbe9Q396l37lHf3KO+uUd9c59655622rcONxxCRERERETkTGnFSURERERE5DQUnERERERERE5DwUlEREREROQ0FJxEREREREROQ8HJQPPmzSMxMRFfX1+Sk5NJTU01uiSP9+2333LVVVcRGxuLyWRi0aJFRpfUJjz55JOMHDmSoKAgIiMjmTx5Mnv27DG6LI/38ssvM2jQINcN+kaPHs3nn39udFltzlNPPYXJZOL+++83uhSPN3fuXEwmU5Otb9++RpfVJhw+fJhbbrmFTp064efnx8CBA1m/fr3RZXm0xMTE437eTCYTM2fONLo0j9bQ0MCf/vQnunXrhp+fHz169OCxxx5D89ZOr7y8nPvvv5+uXbvi5+fHmDFjWLdundFlNZuCk0EWLlxISkoKc+bMYePGjQwePJiJEyeSl5dndGkerbKyksGDBzNv3jyjS2lTVq5cycyZM/nhhx9YunQpNpuNCRMmUFlZaXRpHi0+Pp6nnnqKDRs2sH79ei699FKuueYaduzYYXRpbca6dev45z//yaBBg4wupc3o378/2dnZru377783uiSPV1xczNixY7FarXz++efs3LmTv/zlL4SFhRldmkdbt25dk5+1pUuXAnDjjTcaXJlne/rpp3n55Zf5xz/+wa5du3j66ad55plnePHFF40uzePdeeedLF26lLfffptt27YxYcIExo0bx+HDh40urVk0jtwgycnJjBw5kn/84x8A2O12EhIS+H//7//x0EMPGVxd22Aymfjoo4+YPHmy0aW0Ofn5+URGRrJy5UouvPBCo8tpU8LDw3n22Wf5xS9+YXQpHq+iooJhw4bx0ksv8fjjjzNkyBBe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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(10, 6))\n",
    "ax = fig.add_subplot(1, 1, 1)\n",
    "ax.plot(metrics[\"train_losses\"], label=\"train loss\")\n",
    "ax.plot(metrics[\"valid_losses\"], label=\"valid loss\")\n",
    "ax.set_xlabel(\"epoch\")\n",
    "ax.set_ylabel(\"loss\")\n",
    "ax.set_xticks(range(n_epochs))\n",
    "ax.legend()\n",
    "ax.grid()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "df5d03f9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1cAAAINCAYAAADSoIXVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAACDSUlEQVR4nOzdd3hUdfr+8ffMpHcgPSSEGoo0gURExV1BFMXyW5WmNMXVlV2VdVVsYFlxi8haVla/YAXBVVddC4q4gEoVREWB0AOBFEo6SSYz5/fHJAMxCYQhcGaS+3VduWDOnDnzzEOU3HzOeY7FMAwDEREREREROS1WswsQERERERFpDhSuREREREREmoDClYiIiIiISBNQuBIREREREWkCClciIiIiIiJNQOFKRERERESkCShciYiIiIiINAGFKxERERERkSbgZ3YB3sjpdLJ//37Cw8OxWCxmlyMiIiIiIiYxDIPi4mISExOxWk+8NqVwVY/9+/eTnJxsdhkiIiIiIuIl9u7dS9u2bU+4j8JVPcLDwwFXAyMiIkytxW638/nnn3PppZfi7+9vai2+Rr3zjPrmGfXNM+qb59Q7z6hvnlHfPKfeecab+lZUVERycrI7I5yIwlU9ak4FjIiI8IpwFRISQkREhOnfWL5GvfOM+uYZ9c0z6pvn1DvPqG+eUd88p955xhv71pjLhTTQQkREREREpAkoXImIiIiIiDQBhSsREREREZEmoGuuPGQYBlVVVTgcjjP6Pna7HT8/P8rLy8/4ezU3vtQ7m82Gn5+fRv+LiIiI+DCFKw9UVlZy4MABysrKzvh7GYZBfHw8e/fu1Q/ep8jXehcSEkJCQgIBAQFmlyIiIiIiHlC4OkVOp5Ndu3Zhs9lITEwkICDgjP7g7nQ6KSkpISws7KQ3LZPafKV3hmFQWVlJfn4+u3btonPnzl5dr4iIiIjUT+HqFFVWVuJ0OklOTiYkJOSMv5/T6aSyspKgoCD9wH2KfKl3wcHB+Pv7s2fPHnfNIiIiIuJbvPsnTi/m7T+si+/R95SIiIiIb9NPcyIiIiIiIk1A4Uo8kpqayuzZs80uQ0RERETEa+iaqxbi4osvpk+fPk0WiNatW0doaGiTHEtEREREpDlQuBI3wzBwOBz4+Z382yImJuYsVHR2ncrnFxERERH5JZ0W2AJMmDCB5cuX849//AOLxYLFYmH37t0sW7YMi8XCp59+Sr9+/QgMDOTrr79mx44dXH311cTFxREWFsaAAQP44osvah3zl6cFWiwW/u///o9rr72WkJAQOnfuzIcffnjCut544w369+9PeHg48fHxjBkzhry8vFr7/PTTT1x55ZVEREQQHh7OhRdeyI4dO9zPz5s3jx49ehAYGEhCQgJTpkwBYPfu3dhsNn788Uf3vgUFBVgsFpYtWwZwWp+/oqKC++67j+TkZAIDA+nUqRNz587FMAw6derE3//+91r7b9y4EYvFwvbt20/8hyUiIiIiPkvhqgkYhkFZZdUZ+zpa6ah3u2EYjarvH//4BwMHDmTy5MkcOHCAAwcOkJyc7H7+/vvv56mnnmLz5s306tWLkpIShg8fztKlS/nuu++47LLLGDFiBFlZWSd8n0cffZQbbriBH374geHDhzN27FgOHz7c4P52u53HH3+c77//nvfff5/du3czYcIE9/PZ2dlcdNFFBAYG8uWXX7J+/XomTZpEVVUVAC+++CJ33HEHt956Kz/++CMffvghnTp1alRPjufJ5x83bhxvvfUWzz77LJs3b+Zf//oXYWFhWCwWJk2axCuvvFLrPV555RUuuugij+oTEREREd+g85+awFG7g+6PfHbW3/fnx4YREnDyP8LIyEgCAgIICQkhPj6+zvOPPfYYQ4cOdT9u3bo1vXv3dj9+/PHH+c9//sOHH37oXhmqz4QJExg9ejQATz75JM8++yxr167lsssuq3f/SZMmuX/foUMHnn32WQYMGOC+8e8LL7xAZGQkCxcuxN/fH4AuXbq4X/PEE0/wxz/+kTvvvNO9bcCAASdrRx2n+vkzMzN5++23WbJkCUOGDHHXf3wfHnnkEdauXUt6ejp2u50FCxbUWc0SERERkeZFK1dC//79az0uKSnhnnvuoVu3bkRFRREWFsbmzZtPunLVq1cv9+9DQ0OJiIioc5rf8davX8+IESNISUkhPDycwYMHA7jfZ+PGjVx44YXuYHW8vLw89u/fzyWXXNLoz9mQU/38GzduxGazuev9pcTERK644grmzZsHwH//+18qKiq4/vrrT7tWEREREfFeWrlqAsH+Nn5+bNgZObbT6aS4qJjwiPA6N5kN9rc1yXv8curfPffcw5IlS/j73/9Op06dCA4O5rrrrqOysvKEx/llCLJYLDidznr3LS0tZdiwYQwbNoz58+cTExNDVlYWw4YNc79PcHBwg+91oufg2A15jz910m6317vvqX7+k703wC233MJNN93EM888wyuvvMLIkSMJCQk56etEREREWjLDMDhQWM5P2UfYdNjCcLMLOkUKV03AYrE06vQ8TzidTqoCbIQE+NUJV6ciICAAh8PRqH2/+eYbJkyYwLXXXgu4VnJ2797t8XvXZ8uWLRw6dIinnnrKff3Xt99+W2ufXr168dprr2G32+sEt/DwcFJTU1m6dCm/+tWv6hy/ZpphTk6Oe9vGjRsbVdvJPn/Pnj1xOp0sX77cfVrgLw0fPpzQ0FBefPFFFi9ezIoVKxr13iIiIiItRUFZJVtzitmaW+z6tfr3xeWu6+sTQ6zca3KNp0rhqoVITU1lzZo17N69m7CwMFq3bt3gvp07d+a9995jxIgRWCwWHn744QZXoDyVkpJCQEAAzz33HLfddhubNm3i8ccfr7XPlClTeO655xg1ahTTpk0jMjKS1atXk56eTlpaGjNmzOC2224jNjaWyy+/nOLiYr755ht+//vfExwczHnnncfs2bPp0aMHBw8e5KGHHmpUbSf7/KmpqYwfP55Jkybx7LPP0rt3b/bs2UNeXh433HADADabjQkTJjBt2jQ6d+7MwIEDm655IiIiIj7kaKWD7XklbMkpIjO3mC05xWTmFpNbVFHv/jarhfZtQmhlFDd6gJu3ULhqIe655x7Gjx9P9+7dOXr0KLt27Wpw31mzZjFp0iTOP/98oqOjue+++ygqKmrSemJiYnj11Vd54IEHePbZZzn33HP5+9//zlVXXeXep02bNnz55Zf86U9/YvDgwdhsNvr06cOgQYMAGD9+POXl5TzzzDPcc889REdHc91117lf/3//939MnDiRAQMGkJaWxl//+lcuvfTSk9bWmM//4osv8sADD/C73/2OQ4cOkZKSwgMPPFBrn5tvvpknn3ySiRMnnk6rRERERHxClcPJ7kNlxwJU9UrU7kOlNJSRkqKC6RofTpf4cNevceF0iAnFajj55JNPsFgsZ/dDnCaFqxaiS5curFq1qta21NTUev81IDU1lS+//LLWtjvuuKPW41+eJljfcQoKCk5Y0+jRo93TBRs6Tq9evfjss4YnMf72t7/lt7/9bb3PdevWjc8//5yIiIh6r8G6+OKLPf78QUFBzJo1i1mzZjVYW3Z2Nv7+/owbN67BfURERER8Tc11UTWn82XmuMLU9vwSKqvqP9upVYg/afHhdI2PoEtcOGnx4XSJCyM8qO7gMgC7vWnPmjpbFK5EmlhFRQX5+fnMmDGD66+/nri4OLNLEhEREfFIYZm91ul8v7wu6peC/W10iQurDk/VYSo+jJiwQJ9bhfKEwpVIE3vrrbe4+eab6dOnD6+//rrZ5YiIiIicVLndwbbckurVqCK25pawNafohNdFdYgOdZ3OF3fstL7kViFYrc0/RDVE4UqkiU2YMIEJEyaYXYaIiIhIHVUOJ3sOlx2bzlc9XGL3oVKcJ7gu6thKlOuUvg4xoQT6Nc1tgZoThSsRERERkWbGMAxyisprhaitucVsyzv5dVFpceGkxUeQFh9G57hwIhq4LkrqUrgSEREREfFhhWX2407nOxamihq4LirI3+oaKlE9WKLmq6VcF3UmmR6uXnjhBf72t7+Rk5ND7969ee6550hPT693X7vdzsyZM3nttdfIzs4mLS2Nv/zlL1x22WXufWbMmMGjjz5a63VpaWls2bLljH4OEREREZEzqdxec7+o4lrjznOKyuvd32a10D469LjVKNevKa1b9nVRZ5Kp4WrRokVMnTqVOXPmkJGRwezZsxk2bBhbt24lNja2zv4PPfQQb775Ji+//DJdu3bls88+49prr2XlypX07dvXvV+PHj344osv3I/9/EzPkCIiIiIijeJwGuw+VOoecZ5ZvRp1suuiXFP6Itz3i+oYq+uizjZTU8esWbOYPHmy+yarc+bM4eOPP2bevHncf//9dfZ/4403ePDBBxk+fDgAt99+O1988QVPP/00b775pns/Pz8/4uPjz86HEBERERHxgGEY5BZVsCWnyH1N1NacYrbnlVDRwHVRUSH+pFUPlqiZ0KfroryHaeGqsrKS9evXM23aNPc2q9XKkCFD6tzstkZFRQVBQUG1tgUHB/P111/X2rZt2zYSExMJCgpi4MCBzJw5k5SUlAZrqaiooKLi2JjJoqIiwHUaot1ur7Wv3W7HMAycTidO55m/uVnNTW5r3lMaz9d653Q6MQwDu92OzWbevzLVfM//8ntfTkx984z65jn1zjPqm2fUN8/V9OxgURm7DleQmVdCZm4xmbklbMsrofBow9dFdY4No3NsGGlxYXSOCyMtLpyYsIB6r4tqbn82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yipue3MDKzLz8bNaePqG3lzdJ8nsskRERETES3i0crV48WK+/vpr9+MXXniBPn36MGbMGI4cOdJkxYl4i4KySsb+3xpWZOYT5G/l5fH9FaxEREREpBaPwtWf/vQnioqKAPjxxx/54x//yPDhw9m1axdTp05t0gJFzHag8CjXz1nFd1kFRAb7M/+W8/hVWqzZZYmIiIiIl/HotMBdu3bRvXt3AN59912uvPJKnnzySTZs2OAebiHSHOzIL2Hc3LVkFxwlPiKI129Op0tcuNlliYiIiIgX8mjlKiAggLKyMgC++OILLr30UgBat27tXtES8XU/7Cvg+jmryC44SofoUN65faCClYiIiIg0yKOVqwsuuICpU6cyaNAg1q5dy6JFiwDIzMykbdu2TVqgiBm+3naQ377xLaWVDnomRfLqxAG0CQs0uywRERER8WIerVw9//zz+Pn58c477/Diiy+SlOS6sP/TTz/lsssua9ICRc62T348wKRX11Fa6eD8jm1469bzFKxERERE5KQ8WrlKSUnho48+qrP9mWeeOe2CRMw0f80eHnp/E4YBl58Tz+xRfQj0s5ldloiIiIj4AI/CFYDD4eD9999n8+bNAPTo0YOrrroKm00/iIrvMQyD57/cztNLMgEYk5HC41efg82qmwOLiIiISON4FK62b9/O8OHDyc7OJi0tDYCZM2eSnJzMxx9/TMeOHZu0SJEzyek0eOyjn3l15W4Afv/rTkwd2gWLRcFKRERERBrPo2uu/vCHP9CxY0f27t3Lhg0b2LBhA1lZWbRv354//OEPTV2jyBlTWeXk7rc3uoPV9BHd+eOlaQpWIiIiInLKPFq5Wr58OatXr6Z169bubW3atOGpp55i0KBBTVacyJlUVlnF7W9uYHlmPn5WC3+/vjfX9E0yuywRERER8VEehavAwECKi4vrbC8pKSEgIOC0ixI50wrKKpn06jo2ZBUQ5G/lxRv78au0WLPLEhEREREf5tFpgVdeeSW33nora9aswTAMDMNg9erV3HbbbVx11VVNXaNIk8opLOeGf61iQ1YBEUF+zL8lQ8FKRERERE6bR+Hq2WefpWPHjgwcOJCgoCCCgoI4//zz6dSpE7Nnz27iEkWazs78En7z4koyc0uIiwjk37edT792rU/+QhERERGRk/DotMCoqCg++OADtm/f7h7F3q1bNzp16tSkxYk0pR/2FTDhlXUcLq2kfXQor09KJ7l1iNlliYiIiEgz0ehwNXXq1BM+/7///c/9+1mzZnlekcgZ8M32g9z6+reUVjo4JymCVyemEx0WaHZZIiIiItKMNDpcfffdd43aTyOsxdt8uimHe97ZRKXDyfkd2/Cvm/oRHuRvdlkiIiIi0sw0OlwdvzIl4itW5lp4e/UPGAZc1iOe2aP6EORvM7ssEREREWmGPLrmSsTbGYbBP5ftZNFOV5AanZ7ME9f0xGbVyqqIiIiInBkKV9Is/fvbfTyzdDsAtw9uz72XddMpqyIiIiJyRnk0il3EmxmGwf99vROAS5OcTB3SWcFKRERERM44hStpdr7dc4TM3BKC/a38OtFpdjkiIiIi0kIoXEmzM3/1HgBG9EogWCe+ioiIiMhZonAlzcrh0ko++TEHgNEDkk2uRkRERERaEoUraVbeWb+XSoeTXm0jOScpwuxyRERERKQFUbiSZsPpNFiwJguAsRkpJlcjIiIiIi2NwpU0Gyt3HGL3oTLCA/0Y0TvR7HJEREREpIVRuJJmY/4a1yCLa89NIiRAkyxERERE5OxSuJJmIbeonM9/zgVgjE4JFBERERETKFxJs/D2ur04nAb927Wia7wGWYiIiIjI2adwJT7P4TR4a231IIvztGolIiIiIuZQuBKft2xrHvsLy4kK8efycxLMLkdEREREWiiFK/F5NePXr+/XliB/m8nViIiIiEhLpXAlPm3fkTK+3JoHwOh0nRIoIiIiIuZRuBKftmjdXgwDBnVqQ4eYMLPLEREREZEWTOFKfJbd4WThur0AjM1oZ3I1IiIiItLSKVyJz/ri51zyiyuICQ9kaPc4s8sRERERkRZO4Up81vzqQRYj+yfjb9O3soiIiIiYSz+Rik/adbCUr7cfxGKBUenJZpcjIiIiIqJwJb6p5qbBv0qLpW2rEJOrERERERFRuBIfVG538O9vawZZaPy6iIiIiHgHhSvxOYs35XCkzE5iZBAXp8WaXY6IiIiICKBwJT5o/po9AIxKT8FmtZhcjYiIiIiIi8KV+JStOcWs230Em9XCyAEaZCEiIiIi3kPhSnzKgupVq6Hd4oiLCDK5GhERERGRY7wiXL3wwgukpqYSFBRERkYGa9eubXDfiy++GIvFUufriiuucO8zYcKEOs9fdtllZ+OjyBlUVlnFexuyARh7ngZZiIiIiIh38TO7gEWLFjF16lTmzJlDRkYGs2fPZtiwYWzdupXY2LrDCt577z0qKyvdjw8dOkTv3r25/vrra+132WWX8corr7gfBwYGnrkPIWfFf7/fT3FFFe3ahDCoY7TZ5YiIiIiI1GL6ytWsWbOYPHkyEydOpHv37syZM4eQkBDmzZtX7/6tW7cmPj7e/bVkyRJCQkLqhKvAwMBa+7Vq1epsfBw5gxascd3bakx6ClYNshARERERL2PqylVlZSXr169n2rRp7m1Wq5UhQ4awatWqRh1j7ty5jBo1itDQ0Frbly1bRmxsLK1ateLXv/41TzzxBG3atKn3GBUVFVRUVLgfFxUVAWC327Hb7af6sZpUzfubXYfZNmUX8f2+QvxtFq7uHd+ofqh3nlHfPKO+eUZ985x65xn1zTPqm+fUO894U99OpQaLYRjGGazlhPbv309SUhIrV65k4MCB7u333nsvy5cvZ82aNSd8/dq1a8nIyGDNmjWkp6e7ty9cuJCQkBDat2/Pjh07eOCBBwgLC2PVqlXYbLY6x5kxYwaPPvpone0LFiwgJCTkND6hNJWFO6ysyrPSL9rJuM5Os8sRERERkRairKyMMWPGUFhYSERExAn3Nf2aq9Mxd+5cevbsWStYAYwaNcr9+549e9KrVy86duzIsmXLuOSSS+ocZ9q0aUydOtX9uKioiOTkZC699NKTNvBMs9vtLFmyhKFDh+Lv729qLWYpLrczbf0KwMEfr85gQGrjTvFU7zyjvnlGffOM+uY59c4z6ptn1DfPqXee8aa+1ZzV1himhqvo6GhsNhu5ubm1tufm5hIfH3/C15aWlrJw4UIee+yxk75Phw4diI6OZvv27fWGq8DAwHoHXvj7+5v+h1nDm2o52z7+NpuySgedY8MY2CkGi+XUrrdqyb07HeqbZ9Q3z6hvnlPvPKO+eUZ985x65xlv6NupvL+pAy0CAgLo168fS5cudW9zOp0sXbq01mmC9fn3v/9NRUUFN95440nfZ9++fRw6dIiEhITTrlnOLsMwmF89yGJsRsopBysRERERkbPF9GmBU6dO5eWXX+a1115j8+bN3H777ZSWljJx4kQAxo0bV2vgRY25c+dyzTXX1BlSUVJSwp/+9CdWr17N7t27Wbp0KVdffTWdOnVi2LBhZ+UzSdPZkHWELTnFBPlbufbctmaXIyIiIiLSINOvuRo5ciT5+fk88sgj5OTk0KdPHxYvXkxcXBwAWVlZWK21M+DWrVv5+uuv+fzzz+scz2az8cMPP/Daa69RUFBAYmIil156KY8//rjudeWD5q92rVpd1TuRyGAtpYuIiIiI9zI9XAFMmTKFKVOm1PvcsmXL6mxLS0ujoSGHwcHBfPbZZ01ZnpjkSGklH/14AICxGe1MrkZERERE5MRMPy1QpCHvbthHZZWTc5Ii6NU20uxyREREREROSOFKvNLxgyzGpLfTIAsRERER8XoKV+KVVu04xK6DpYQF+nFVn0SzyxEREREROSmFK/FKNatW1/RNJCzQKy4NFBERERE5IYUr8Tp5xeV89lMO4DolUERERETEFyhcidf597f7qHIanJsSRffECLPLERERERFpFIUr8SoOp8GC6lMCNX5dRERERHyJwpV4lRXb8skuOEpksD9X9EowuxwRERERkUZTuBKvMn+1a9Xqun5tCfK3mVyNiIiIiEjjKVyJ19hfcJQvt+QCMCYjxeRqREREREROjcKVeI2F6/biNGBghzZ0jAkzuxwRERERkVOicCVewe5wsnBt9SCL87RqJSIiIiK+R+FKvMLSzXnkFVcQHRbApd3jzS5HREREROSUKVyJV5i/Zg8AN/RPJsBP35YiIiIi4nv0U6yYbs+hUr7adhCLBUan65RAEREREfFNCldiugXV11oN7hJDcusQk6sREREREfGMwpWYqqLKwb+/3QfAGK1aiYiIiIgPU7gSUy3elMPh0kriI4L4dddYs8sREREREfGYwpWYav4a1ymBo9KT8bPp21FEREREfJd+mhXTbMstZu2uw9isFkYN0CmBIiIiIuLbFK7ENDWrVpd0jSU+MsjkakRERERETo/ClZjiaKWDdze4BlmMPa+dydWIiIiIiJw+hSsxxUc/7Ke4vIrk1sFc2Cna7HJERERERE6bwpWYouaUwDHp7bBaLSZXIyIiIiJy+hSu5KzblF3Ixr0F+NssXN+/rdnliIiIiIg0CYUrOesWrHWtWl12TgLRYYEmVyMiIiIi0jQUruSsKqmo4oPvsgEYm6Hx6yIiIiLSfChcyVn1/nfZlFY66BgTSkb71maXIyIiIiLSZBSu5KwxDMM9yGJsRjssFg2yEBEREZHmQ+FKzprv9haw+UARgX5WfnOuBlmIiIiISPOi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ERERERHxHgpX0miHSipYvCkHgDHp7UyuRkRERETEuyhcSaO9s34flQ4nvdtG0rNtpNnliIiIiIh4FYUraRSn02DB2ppBFlq1EhERERH5JYUraZRvdhxkz6EywoP8uLJ3gtnliIiIiIh4HYUraZT5q12rVr85ty0hAX4mVyMiIiIi4n0UruSkcovKWbI5F4AxGSkmVyMiIiIi4p0UruSkFq3bi8NpkJ7ami5x4WaXIyIiIiLilRSu5ISqHE7eqhlkcZ5WrUREREREGqJwJSe0bGs+BwrLaR0awGXnxJtdjoiIiIiI11K4khOav2YPANf3a0ugn83kakREREREvJfClTRo7+EylmXmAzA6XacEioiIiIiciMKVNGjhuiwMAy7oFE1qdKjZ5YiIiIiIeDWFK6lXZZWTRev2ATBW49dFRERERE5K4UrqteTnXA6WVBATHsiQ7nFmlyMiIiIi4vUUrqReNYMsRg1Ixt+mbxMRERERkZPRT81Sx878ElbuOITVAqM0yEJEREREpFEUrqSOmpsG/yotlqSoYJOrERERERHxDQpXUku53cG/11cPsjhPq1YiIiIiIo2lcCW1fLrpAAVldpKighncJdbsckREREREfIbCldQyf7XrlMDR6cnYrBaTqxERERER8R0KV+K2JaeIb/ccwc9q4Yb+yWaXIyIiIiLiUxSuxG3BGteq1aU94oiNCDK5GhERERER36JwJQCUVlTx3oZsAMZmtDO5GhERERER36NwJQD89/v9lFRU0T46lIEd2phdjoiIiIiIz1G4EgDmV58SOCY9BasGWYiIiIiInDKFK+GHfQX8mF1IgJ+V3/Rra3Y5IiIiIiI+SeFK3OPXh58TT+vQAJOrERERERHxTQpXLVzhUTsffr8fgLHnaZCFiIiIiIinFK5auPe/y+ao3UGXuDD6t2tldjkiIiIiIj5L4aoFMwyD+Wv2AK7x6xaLBlmIiIiIiHhK4aoFW7/nCJm5JQT727j23CSzyxERERER8WkKVy1Yzfj1q3onEhHkb3I1IiIiIiK+TeGqhTpcWsnHPx4AYOx5KSZXIyIiIiLi+xSuWqh31++jsspJz6RIerWNMrscERERERGfp3DVAjmdBgvWuk4JHJuhVSsRERERkaagcNUCrdp5iF0HSwkP9GNE70SzyxERERERaRYUrlqgmvHr156bRGign8nV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ZCEiIiIiIuZSuPJRK7bls+/IUSKD/bmiV4LZ5YiIiIiItHgKVz5q/mrXqtVvzm1LkL/N5GpEREREREThygftLzjKl1tyARiTkWJyNSIiIiIiAgpXPmnhur04DTivQ2s6xYaZXY6IiIiIiKBw5XOqHE4WrdMgCxERERERb6Nw5WOWbskjt6iCNqEBDOsRb3Y5IiIiIiJSTeHKx8xf41q1umFAMgF++uMTEREREfEW+unch2QdKmNFZj4WC4weoEEWIiIiIiLeROHKhyyovmnwRZ1jSGkTYnI1IiIiIiJyPIUrH1FR5eTf3+4FYKzGr4uIiIiIeB2FKx+x5OdcDpVWEh8RxK+7xppdjoiIiIiI/ILClY94a90+AEalJ+Nn0x+biIiIiIi30U/pPiCnDNbuPoLNamGUBlmIiIiIiHglhSsfsDLX9cd0SddY4iODTK5GRERERETqo3Dl5Y5WOlibbwFg7HntTK5GREREREQaonDl5T7ZlMNRh4W2rYK5sFO02eWIiIiIiEgDFK68nHuQRf+2WK0Wk6sREREREZGGKFx5sSqHkwGprYj0N/jNuYlmlyMiIiIiIifgZ3YB0jA/m5X7hnWhR9V2osMCzS5HREREREROQCtXPkBnA4qIiIiIeD+FKxERERERkSagcCUiIiIiItIEFK5ERERERESagMKViIiIiIhIE1C4EhERERERaQIKVyIiIiIiIk1A4UpERERERKQJKFyJiIiIiIg0AYUrERERERGRJqBwJSIiIiIi0gQUrkRERERERJqAwpWIiIiIiEgTMD1cvfDCC6SmphIUFERGRgZr16494f4FBQXccccdJCQkEBgYSJcuXfjkk09O65giIiIiIiKny9RwtWjRIqZOncr06dPZsGEDvXv3ZtiwYeTl5dW7f2VlJUOHDmX37t288847bN26lZdffpmkpCSPjykiIiIiItIUTA1Xs2bNYvLkyUycOJHu3bszZ84cQkJCmDdvXr37z5s3j8OHD/P+++8zaNAgUlNTGTx4ML179/b4mCIiIiIiIk3Bz6w3rqysZP369UybNs29zWq1MmTIEFatWlXvaz788EMGDhzIHXfcwQcffEBMTAxjxozhvvvuw2azeXRMgIqKCioqKtyPi4qKALDb7djt9tP9qKel5v3NrsMXqXeeUd88o755Rn3znHrnGfXNM+qb59Q7z3hT306lBtPC1cGDB3E4HMTFxdXaHhcXx5YtW+p9zc6dO/nyyy8ZO3Ysn3zyCdu3b+d3v/sddrud6dOne3RMgJkzZ/Loo4/W2f75558TEhLiwadrekuWLDG7BJ+l3nlGffOM+uYZ9c1z6p1n1DfPqG+eU+884w19Kysra/S+poUrTzidTmJjY3nppZew2Wz069eP7Oxs/va3vzF9+nSPjztt2jSmTp3qflxYWEhKSgoDBw4kPDy8KUr3mN1u53//+x+/+tWv8Pf3N7UWX6PeeUZ984z65hn1zXPqnWfUN8+ob55T7zzjTX0rLi4GwDCMk+5rWriKjo7GZrORm5tba3tubi7x8fH1viYhIQF/f39sNpt7W7du3cjJyaGystKjYwIEBgYSGBjoflxzWmD79u1P+XOJiIiIiEjzU1xcTGRk5An3MS1cBQQE0K9fP5YuXco111wDuFamli5dypQpU+p9zaBBg1iwYAFOpxOr1TWLIzMzk4SEBAICAgBO+Zj1SUxMZO/evYSHh2OxWDz/kE2gqKiI5ORk9u7dS0REhKm1+Br1zjPqm2fUN8+ob55T7zyjvnlGffOceucZb+qbYRgUFxeTmJh40n1NPS1w6tSpjB8/nv79+5Oens7s2bMpLS1l4sSJAIwbN46kpCRmzpwJwO23387zzz/PnXfeye9//3u2bdvGk08+yR/+8IdGH7MxrFYrbdu2bdoPe5oiIiJM/8byVeqdZ9Q3z6hvnlHfPKfeeUZ984z65jn1zjPe0reTrVjVMDVcjRw5kvz8fB555BFycnLo06cPixcvdg+kyMrKcq9QASQnJ/PZZ59x991306tXL5KSkrjzzju57777Gn1MERERERGRM8FiNObKLDFNUVERkZGRFBYWekVq9yXqnWfUN8+ob55R3zyn3nlGffOM+uY59c4zvto3U28iLCcXGBjI9OnTaw3ckMZR7zyjvnlGffOM+uY59c4z6ptn1DfPqXee8dW+aeVKRERERESkCWjlSkREREREpAkoXImIiIiIiDQBhSsREREREZEmoHAlIiIiIiLSBBSuvNwLL7xAamoqQUFBZGRksHbtWrNL8norVqxgxIgRJCYmYrFYeP/9980uyevNnDmTAQMGEB4eTmxsLNdccw1bt241uyyf8OKLL9KrVy/3TQ4HDhzIp59+anZZPuepp57CYrFw1113mV2KV5sxYwYWi6XWV9euXc0uy2dkZ2dz44030qZNG4KDg+nZsyfffvut2WV5tdTU1DrfcxaLhTvuuMPs0ryaw+Hg4Ycfpn379gQHB9OxY0cef/xxNEfu5IqLi7nrrrto164dwcHBnH/++axbt87sshpN4cqLLVq0iKlTpzJ9+nQ2bNhA7969GTZsGHl5eWaX5tVKS0vp3bs3L7zwgtml+Izly5dzxx13sHr1apYsWYLdbufSSy+ltLTU7NK8Xtu2bXnqqadYv3493377Lb/+9a+5+uqr+emnn8wuzWesW7eOf/3rX/Tq1cvsUnxCjx49OHDggPvr66+/Nrskn3DkyBEGDRqEv78/n376KT///DNPP/00rVq1Mrs0r7Zu3bpa329LliwB4Prrrze5Mu/2l7/8hRdffJHnn3+ezZs385e//IW//vWvPPfcc2aX5vVuueUWlixZwhtvvMGPP/7IpZdeypAhQ8jOzja7tEbRKHYvlpGRwYABA3j++ecBcDqdJCcn8/vf/57777/f5Op8g8Vi4T//+Q/XXHON2aX4lPz8fGJjY1m+fDkXXXSR2eX4nNatW/O3v/2Nm2++2exSvF5JSQnnnnsu//znP3niiSfo06cPs2fPNrssrzVjxgzef/99Nm7caHYpPuf+++/nm2++4auvvjK7FJ9211138dFHH7Ft2zYsFovZ5XitK6+8kri4OObOneve9pvf/Ibg4GDefPNNEyvzbkePHiU8PJwPPviAK664wr29X79+XH755TzxxBMmVtc4WrnyUpWVlaxfv54hQ4a4t1mtVoYMGcKqVatMrExagsLCQsAVEqTxHA4HCxcupLS0lIEDB5pdjk+44447uOKKK2r9v05ObNu2bSQmJtKhQwfGjh1LVlaW2SX5hA8//JD+/ftz/fXXExsbS9++fXn55ZfNLsunVFZW8uabbzJp0iQFq5M4//zzWbp0KZmZmQB8//33fP3111x++eUmV+bdqqqqcDgcBAUF1doeHBzsM6v0fmYXIPU7ePAgDoeDuLi4Wtvj4uLYsmWLSVVJS+B0OrnrrrsYNGgQ55xzjtnl+IQff/yRgQMHUl5eTlhYGP/5z3/o3r272WV5vYULF7JhwwafOpfebBkZGbz66qukpaVx4MABHn30US688EI2bdpEeHi42eV5tZ07d/Liiy8ydepUHnjgAdatW8cf/vAHAgICGD9+vNnl+YT333+fgoICJkyYYHYpXu/++++nqKiIrl27YrPZcDgc/PnPf2bs2LFml+bVwsPDGThwII8//jjdunUjLi6Ot956i1WrVtGpUyezy2sUhSsRqeWOO+5g06ZNPvMvRN4gLS2NjRs3UlhYyDvvvMP48eNZvny5AtYJ7N27lzvvvJMlS5bU+RdKadjx/+rdq1cvMjIyaNeuHW+//bZOQz0Jp9NJ//79efLJJwHo27cvmzZtYs6cOQpXjTR37lwuv/xyEhMTzS7F67399tvMnz+fBQsW0KNHDzZu3Mhdd91FYmKivt9O4o033mDSpEkkJSVhs9k499xzGT16NOvXrze7tEZRuPJS0dHR2Gw2cnNza23Pzc0lPj7epKqkuZsyZQofffQRK1asoG3btmaX4zMCAgLc/6LWr18/1q1bxz/+8Q/+9a9/mVyZ91q/fj15eXmce+657m0Oh4MVK1bw/PPPU1FRgc1mM7FC3xAVFUWXLl3Yvn272aV4vYSEhDr/4NGtWzfeffddkyryLXv27OGLL77gvffeM7sUn/CnP/2J+++/n1GjRgHQs2dP9uzZw8yZMxWuTqJjx44sX76c0tJSioqKSEhIYOTIkXTo0MHs0hpF11x5qYCAAPr168fSpUvd25xOJ0uXLtW1HNLkDMNgypQp/Oc//+HLL7+kffv2Zpfk05xOJxUVFWaX4dUuueQSfvzxRzZu3Oj+6t+/P2PHjmXjxo0KVo1UUlLCjh07SEhIMLsUrzdo0KA6t5jIzMykXbt2JlXkW1555RViY2NrDRmQhpWVlWG11v4x22az4XQ6TarI94SGhpKQkMCRI0f47LPPuPrqq80uqVG0cuXFpk6dyvjx4+nfvz/p6enMnj2b0tJSJk6caHZpXq2kpKTWv+Lu2rWLjRs30rp1a1JSUkyszHvdcccdLFiwgA8++IDw8HBycnIAiIyMJDg42OTqvNu0adO4/PLLSUlJobi4mAULFrBs2TI+++wzs0vzauHh4XWu6QsNDaVNmza61u8E7rnnHkaMGEG7du3Yv38/06dPx2azMXr0aLNL83p33303559/Pk8++SQ33HADa9eu5aWXXuKll14yuzSv53Q6eeWVVxg/fjx+fvrRsTFGjBjBn//8Z1JSUujRowffffcds2bNYtKkSWaX5vU+++wzDMMgLS2N7du386c//YmuXbv6zs+/hni15557zkhJSTECAgKM9PR0Y/Xq1WaX5PX+97//GUCdr/Hjx5tdmteqr1+A8corr5hdmtebNGmS0a5dOyMgIMCIiYkxLrnkEuPzzz83uyyfNHjwYOPOO+80uwyvNnLkSCMhIcEICAgwkpKSjJEjRxrbt283uyyf8d///tc455xzjMDAQKNr167GSy+9ZHZJPuGzzz4zAGPr1q1ml+IzioqKjDvvvNNISUkxgoKCjA4dOhgPPvigUVFRYXZpXm/RokVGhw4djICAACM+Pt644447jIKCArPLajTd50pERERERKQJ6JorERERERGRJqBwJSIiIiIi0gQUrkRERERERJqAwpWIiIiIiEgTULgSERERERFpAgpXIiIiIiIiTUDhSkREREREpAkoXImIiDShZcuWYbFYKCgoMLsUERE5yxSuREREREREmoDClYiIiIiISBNQuBIRkWbF6XQyc+ZM2rdvT3BwML179+add94Bjp2y9/HHH9OrVy+CgoI477zz2LRpU61jvPvuu/To0YPAwEBSU1N5+umnaz1fUVHBfffdR3JyMoGBgXTq1Im5c+fW2mf9+vX079+fkJAQzj//fLZu3XpmP7iIiJhO4UpERJqVmTNn8vrrrzNnzhx++ukn7r77bm688UaWL1/u3udPf/oTTz/9NOvWrSMmJoYRI0Zgt9sBVyi64YYbGDVqFD/++CMzZszg4Ycf5tVXX3W/fty4cbz11ls8++yzbN68mX/961+EhYXVquPBBx/k6aef5ttvv8XPz49Jkyadlc8vIiLmsRiGYZhdhIiISFOoqKigdevWfPHFFwwcONC9/ZZbbqGsrIxbb72VX/3qVyxcuJCRI0cCcPjwYdq2bcurr77KDTfcwNixY8nPz+fzzz93v/7ee+/l448/5qeffiIzM5O0tDSWLFnCkCFD6tSwbNkyfvWrX/HFF19wySWXAPDJJ59wxRVXcPToUYKCgs5wF0RExCxauRIRkWZj+/btlJWVMXToUMLCwtxfr7/+Ojt27HDvd3zwat26NWlpaWzevBmAzZs3M2jQoFrHHTRoENu2bcPhcLBx40ZsNhuDBw8+YS29evVy/z4hIQGAvLy80/6MIiLivfzMLkBERKSplJSUAPDxxx+TlJRU67nAwMBaActTwcHBjdrP39/f/XuLxQK4rgcTEZHmSytXIiLSbHTv3p3AwECysrLo1KlTra/k5GT3fqtXr3b//siRI2RmZtKtWzcAunXrxjfffFPruN988w1dunTBZrPRs2dPnE5nrWu4REREQCtXIiLSjISHh3PPPfdw991343Q6ueCCCygsLOSbb74hIiKCdu3aAfDYY4/Rpk0b4uLiePDBB4mOjuaaa64B4I9//CMDBgzg8ccfZ+TIkaxatYrnn3+ef/7znwCkpqYyfvx4Jk2axLPPPkvv3r3Zs2cPeXl53HDDDWZ9dBER8QIKVyIi0qw8/vjjxMTEMHPmTHbu3ElUVBTnnnsuDzzwgPu0vKeeeoo777yTbdu20adPH/5/O3doZCEMhWH0V2gshiKoCE0JEQgogh6w1MXQwlNvK7gz7Oye00AS+U2Se11Xuq5LkkzTlPM8s65r9n3PMAzZti3zPP+scRxHWmtZliX3fWccx7TW3jguAL+IaYEA/BvfSX7P86Tv+7e3A8Af488VAABAAXEFAABQwLNAAACAAm6uAAAACogrAACAAuIKAACggLgCAAAoIK4AAAAKiCsAAIAC4goAAKCAuAIAACggrgAAAAp8ANgIqjjfCQtoAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(10, 6))\n",
    "ax = fig.add_subplot(1, 1, 1)\n",
    "ax.plot(metrics[\"train_accs\"], label=\"train accuracy\")\n",
    "ax.plot(metrics[\"valid_accs\"], label=\"valid accuracy\")\n",
    "ax.set_xlabel(\"epoch\")\n",
    "ax.set_ylabel(\"loss\")\n",
    "ax.set_xticks(range(n_epochs))\n",
    "ax.legend()\n",
    "ax.grid()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "bb00498a",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "evaluating...: 100%|████████████████████████████| 49/49 [00:01<00:00, 40.04it/s]\n"
     ]
    }
   ],
   "source": [
    "model.load_state_dict(torch.load(\"cnn.pt\"))\n",
    "\n",
    "test_loss, test_acc = evaluate(test_data_loader, model, criterion, device)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "39eacaaf",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test_loss: 0.303, test_acc: 0.875\n"
     ]
    }
   ],
   "source": [
    "print(f\"test_loss: {test_loss:.3f}, test_acc: {test_acc:.3f}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "7c08b412",
   "metadata": {},
   "outputs": [],
   "source": [
    "def predict_sentiment(text, model, tokenizer, vocab, device, min_length, pad_index):\n",
    "    tokens = tokenizer(text)\n",
    "    ids = vocab.lookup_indices(tokens)\n",
    "    if len(ids) < min_length:\n",
    "        ids += [pad_index] * (min_length - len(ids))\n",
    "    tensor = torch.LongTensor(ids).unsqueeze(dim=0).to(device)\n",
    "    prediction = model(tensor).squeeze(dim=0)\n",
    "    probability = torch.softmax(prediction, dim=-1)\n",
    "    predicted_class = prediction.argmax(dim=-1).item()\n",
    "    predicted_probability = probability[predicted_class].item()\n",
    "    return predicted_class, predicted_probability"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "4fd0877a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0, 0.9678295254707336)"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text = \"This film is terrible!\"\n",
    "min_length = max(filter_sizes)\n",
    "\n",
    "predict_sentiment(text, model, tokenizer, vocab, device, min_length, pad_index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "31063352",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1, 0.9739698171615601)"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text = \"This film is great!\"\n",
    "\n",
    "predict_sentiment(text, model, tokenizer, vocab, device, min_length, pad_index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "162aea28",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0, 0.8873267769813538)"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text = \"This film is not terrible, it's great!\"\n",
    "\n",
    "predict_sentiment(text, model, tokenizer, vocab, device, min_length, pad_index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "83c036aa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1, 0.7395941615104675)"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "text = \"This film is not great, it's terrible!\"\n",
    "\n",
    "predict_sentiment(text, model, tokenizer, vocab, device, min_length, pad_index)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
